﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DominioSATT;
using RepositorioSATT.Conexiones;
using System.Data;

namespace RepositorioSATT
{
    public class CategoriaRepositorio : ICategoriaRepositorio, IMapeadorFila<Categoria>
    {
        protected Conexion conn;
        protected string sql;
        public CategoriaRepositorio()
        {
            conn = new Conexion();
        }
        #region Miembros de ICategoriaRepositorio

        public List<String> Listar()
        {
            sql = " Select * From Categorias ";
            DataTable Dt = conn.Listar(sql);
            List<String> Lista = new List<String>();
            foreach (DataRow Dr in Dt.Rows)
            {
                Lista.Add(Dr["Nombre"].ToString());
            }
            return Lista;
        }

        public Categoria Obtener(int Id)
        {
            sql = " Select * From Categorias Where IdCategoria = " + Id;
            DataRow Dr = conn.Buscar(sql);
            return this.MapearTabla(Dr);
        }

        public Categoria ObtenerPorEdad(int Edad)
        {
            sql = " Select * From Categorias Where " + Edad + " >= EdadMin And " + Edad + " <= EdadMax";
            DataRow Dr = conn.Buscar(sql);
            return this.MapearTabla(Dr);
        }

        public int Agregar(Categoria Objeto)
        {
            string Valores = "'" + Objeto.Nombre + "'," + Objeto.EdadMin + "," + Objeto.EdadMax;
            return conn.Agregar("Categorias", "Nombre, EdadMin, EdadMax", Valores);
        }

        public void Modificar(Categoria Objeto)
        {
            sql = " Update Categorias Set Nombre = '" + Objeto.Nombre + "', EdadMin = " + Objeto.EdadMin +
                ", EdadMax = " + Objeto.EdadMax + " Where IdCategoria = " + Objeto.Id;
            conn.ActualizarOEliminar(sql);
        }

        public int ObtenerId(string Nombre)
        {
            sql = " Select IdCategoria From Categorias Where Nombre = '" + Nombre + "'";
            DataRow Dr = conn.Buscar(sql);
            return Convert.ToInt32(Dr[0]);
        }

        #endregion

        #region Miembros de IMapeadorFila<Categoria>

        public Categoria MapearTabla(System.Data.DataRow fila)
        {
            Categoria Retorno = null;
            if (fila != null)
            {
                Retorno = new Categoria((fila.IsNull("IdCategoria") == true ? 0 : Convert.ToInt32(fila["IdCategoria"])),
                    (fila.IsNull("Nombre") == true ? string.Empty : fila["Nombre"].ToString()),
                    (fila.IsNull("EdadMin") == true ? 0 : Convert.ToInt32(fila["EdadMin"])),
                    (fila.IsNull("EdadMax") == true ? 0 : Convert.ToInt32(fila["EdadMax"])));
            }
            return Retorno;
        }

        #endregion
    }
}
